An application server is a software framework that delivers applications to client computers or devices. An application server facilitates software development by allowing designers and programmers to devote their time to meeting software requirements rather than dealing with the standard low-level details of providing a working system. An application server can be provided as middleware that sits between operating systems and high-level enterprise applications. An application server enables applications to intercommunicate with dependent applications, such as web servers, database management systems, and chart programs.
The Java language and enterprise programming standards (e.g., Java Enterprise Edition (Java EE)) have been widely adopted by enterprises to build and deploy applications. However, the success of Java has also given rise to a variety of alternative programming and deployment approaches. Currently, enterprises use a number of applications platforms (e.g., lightweight servlet containers, OSGi, Java EE and other application platforms) along with a myriad of programming approaches, APIs and dynamic languages to support their business applications. Each application platform is generally designed for and hard-coded with a specific programming model. This application environment is inflexible and cannot be easily adapted to the constantly changing Java development. Further, each individual business application often requires different operational capabilities for scalability, manageability, high availability and security. The varied requirements have resulted in a highly complex application environment that is costly and difficult to manage.